package quanlyhochieu.xoa;
import java.util.*;
import quanlyhochieu.taomoi.utils;

import javax.servlet.http.HttpServletRequest;

import quanlydoanra.utils.truyXuatDatabase;
import quanlydoanra.xoa.DoanRa;
import quanlyhochieu.taomoi.HoChieu;
import utils.DateUtils;
import utils.UtilsOnScopes;
import dbutil.ConnectDB;
public class XoaHoChieu {
	private String error;
	private String soHC;
	private List<TableHoChieu> listHC;
	int i =0;
	public String getError() {
		return error;
	}
	public void setError(String error) {
		this.error = error;
	}
	public String getSoHC() {
		return soHC;
	}
	public void setSoHC(String soHC) {
		this.soHC = soHC;
	}
	public List<TableHoChieu> getListHC() {
		if(i ==1)this.displayAll();
		else this.timTheoMa();
		return this.listHC;
	}
	public void setListHC(List<TableHoChieu> listHC) {
		this.listHC = listHC;
	}
	
	public List<TableHoChieu> searchHelp(){
		this.setError("");
		List<TableHoChieu> list = new ArrayList<TableHoChieu>();
		String SQL ="";
		if(this.soHC != null){  
			SQL ="select * from hochieu as HC, canhan as CN where HC.sohc like '%"+ this.soHC.trim() + "%' and CN.cmnd = HC.cmnd";
		}
		else SQL = "select * from hochieu as HC, canhan as CN where CN.cmnd = HC.cmnd";
		System.out.println("SQL "+SQL);
		ArrayList<HashMap<String, Object>> array = ConnectDB.getDataTypeList(SQL);
		if (array.size() > 0) {
			HashMap<String, Object> hash = new HashMap<String, Object>();
			int stt = 0;
			for (int i = 0; i < array.size(); i++) {
				stt = i + 1;
				hash = (HashMap<String, Object>) array.get(i);
				TableHoChieu table = new TableHoChieu();
				String strSoHC1 = hash.get("sohc").toString();
				String strTen = hash.get("ten").toString();
				String strcmnd = hash.get("cmnd").toString();	
				String strcoquan = hash.get("coquan").toString();
				String strgioitinh = hash.get("gioitinh").toString();
				String strNamSinh = hash.get("namsinh").toString();
				table.setStt(String.valueOf(stt));
				table.setTen(strTen);
				table.setSoHC(strSoHC1);
				table.setCmnd(strcmnd);
				table.setCoQuan(strcoquan);
				String gioitinh ="";
				boolean b = Boolean.parseBoolean(strgioitinh);
				if (b == true) gioitinh = "Nam";
				else gioitinh = "Nữ";
				table.setGioiTinh(gioitinh);
				table.setNamSinh(strNamSinh);
				list.add(table);
			}
		}
		else {
			this.setError("Không tìm thấy hộ chiếu có mã số đã nhập");
		}
		return list;
	
		}
	
	public String timTheoMa(){
		i = 0;
		this.setListHC(this.searchHelp());
		return "finish_xoa_hochieu";
	}
	public String displayAll(){
		i =1;
		this.soHC =null;
		this.setListHC(this.searchHelp());
		return "finish_xoa_hochieu";
	}
	public String delete(){
		try {
		HttpServletRequest request = UtilsOnScopes.getRequest();
		String accSoHC = request.getParameter("soHC");	
		System.out.println("so ho chieu "+accSoHC);
	 //kiểm tra xem thành viên này có được xóa HC này ko ở đây
			//neu la admin thi ko can goi yeu cau
			//Neu ho chieu dang co trong mot doan ra nao do thi khong dc quyen xoa
			//Neu ca nhan chi co 1 ho chieu nay thi xoa luon dong ca nhan con neu
				//co ho chieu khac nua thi de dong ca nhan trong bang ca nhan
		
		String userName = UtilsOnScopes.getUserName();
			if(!userName.equals("admin")){
			if(truyXuatDatabase.getDuyet(accSoHC) == -1) {
				this.setError("Bạn phải gửi yêu cầu đến người quản trị trước khi xóa hộ chiếu này!");
			}
			else if(truyXuatDatabase.getDuyet(accSoHC) == 0) {
				this.setError("Yêu cầu của bạn đang ở trạng thái chờ duyệt");
			}
			else if(utils.checkHCTrongDoanRa(accSoHC) == false){
				this.setError("Hộ chiếu hiện đang được sử dụng để xuất cảnh");
			}
			else {
			if(utils.xoaHoChieu(accSoHC) == false){
				this.setError("Xóa thành công hộ chiếu!");
				truyXuatDatabase.insertNhatKyXoaSua(UtilsOnScopes.getUserName(), DateUtils.utilDateToSqlDate(new Date()), accSoHC, "Xóa", "Xóa hộ chiếu");
			}
			else this.setError("Quá trình xóa hộ chiếu bị lỗi!");
		}
			}
			else {
				if(utils.xoaHoChieu(accSoHC) == true){
					this.setError("Xóa thành công hộ chiếu!");
					truyXuatDatabase.insertNhatKyXoaSua(UtilsOnScopes.getUserName(), DateUtils.utilDateToSqlDate(new Date()), accSoHC, "Xóa", "Xóa hộ chiếu");
				}
				else this.setError("Quá trình xóa hộ chiếu bị lỗi!");
				}
		}catch (Exception e) {
		}
		 
		return "finish_xoa_hochieu";
	}

}
